<?php

class Controler {
    public $config;
    private $param;
    public function __construct() {   //注意是双下划线
        $this->get_config();
        //获取静态缓存
       if($this->config->static_cache){
           if(file_exists("./config/cache/".REQUEST_URI.".html")){
                include("./config/cache/".REQUEST_URI.".html");
                exit;
           }
       }
    }

    //读取配置参数
    protected function get_config(){
        if(!isset($this->config)){
            $this->config=json_decode(CONFIG);
        }
    }

    //渲染
    public function render($param=array()){
        $this->get_config();
        $this->param=$param;
        if(!file_exists("./view".FILEPATH."/".CLASSNAME."/".FUNCTIONNAME.".php")) die("没有找到模板文件："."./view".FILEPATH."/".CLASSNAME."/".FUNCTIONNAME.".php");
       
       if($this->config->static_cache){
            //开始缓存
            $this->to_cache();
            //读取缓存文件
            include("./config/cache/".REQUEST_URI.".html");
       }
       else{
           //动态显示
            include("./view".FILEPATH."/".CLASSNAME."/".FUNCTIONNAME.".php");
       }
    }
    //缓存
    public function to_cache(){
        ob_start("ob_callback");
        include("./view".FILEPATH."/".CLASSNAME."/".FUNCTIONNAME.".php");
        ob_end_flush();
    }

    //包含公共模板
    public function layout($path,$defalut_url=true){
        if($defalut_url){
            if(!file_exists("./view".FILEPATH."/layout/".$path)) die("没有找到模板文件："."./view".FILEPATH."/layout/".$path);
            include("./view".FILEPATH."/layout/".$path);
        }
        else{
            if(!file_exists($path)) die("没有找到模板文件：".$path);
            include($path);
        }
    }
}

